/***************************************************************************
                          kcheckeduca.cpp  -  description
                             -------------------
    begin                : Tue Sep 5 2000
    copyright            : (C) 2000 by Javier Campos Morales
    email                : javi_c@ctv.es
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#include "kcheckeduca.h"
#include "kcheckeduca.moc"
#include <qpainter.h>

KCheckEduca::KCheckEduca(QWidget *parent, const char *name ) : QCheckBox(parent,name)
{
doc = 0;
}

KCheckEduca::~KCheckEduca()
{
delete doc;
}


static int extraWidth( int gs )
{
    if ( gs == Qt::MotifStyle )
	return 8;
    else
	return 6;
}

/**  */
void KCheckEduca::drawButtonLabel( QPainter *p){
    int x, y, w, h;
    GUIStyle gs = style().guiStyle();
    QSize sz = style().indicatorSize();
    y = 0;
    x = sz.width() + extraWidth( gs ); //###
    w = width() - x;
    h = height();

     QRect cr(x,y,w,h);

	doc = new QSimpleRichText( text(), font() );
	doc->setWidth( 10 );

	doc->setWidth(p, cr.width() );
	int rw = doc->widthUsed() + extraWidth( gs );
	int rh = doc->height();
	int xo = 0;
	int yo = 0;

	this->resize( this->width(), rh);

  yo = (cr.height()-rh)/2;
	if ( style() == WindowsStyle && !isEnabled() ) {
	    QColorGroup cg = colorGroup();
	    cg.setColor( QColorGroup::Text, cg.light() );
	    doc->draw(p, cr.x()+xo+1, cr.y()+yo+1, cr, cg, 0);
	}
	doc->draw(p, cr.x()+xo, cr.y()+yo, cr, colorGroup(), 0);

    if ( hasFocus() ) {
//	QRect br = style().itemRect( p, x, y, rw, rh+yo,
//				   AlignLeft|AlignVCenter|ShowPrefix,
//				   isEnabled(),
//				   pixmap(), text().visual() );
	QRect br(x,y,rw,rh+yo);

	br.setLeft( br.left()-3 );
	br.setRight( br.right()+2 );
	br.setTop( br.top()-2 );
	br.setBottom( br.bottom()+2);
	br = br.intersect( QRect(0,0,rw, rh+yo ) );
	style().drawFocusRect(p, br, colorGroup());
    }
}
